package com.xxx.mall.service;

import com.xxx.mall.dto.CategoryDTO;
import com.xxx.mall.model.Category;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xxx.mall.vo.CategoryVO;

import java.util.List;

/**
 * <p>
 * 分类信息 服务类
 * </p>
 *
 * @author 邢晨旭
 * @since 2023-11-15
 */
public interface CategoryService extends IService<Category> {

    List<CategoryVO> queryList(Long shopId);

    void updateCategoryById(CategoryDTO categoryDTO);

    void deleteById(Long id);

    void saveCategory(CategoryDTO categoryDTO);

    CategoryVO queryById(Long id);


    /**
     * 启用或者禁用分类
     * @param id 分类id
     * @param status 状态
     */
    void categoryEnableOrDisable(Long id, Integer status);

    /**
     * 查询分类树
     * @param shopId 租户id
     * @return 分类树
     */
    List<CategoryVO> queryTreeList(Long shopId);

    /**
     * 根据分类级别查询分类列表
     * @param shopId 租户id
     * @param level 分类级别
     * @return 分类列表
     */
    List<CategoryVO> queryListByLevel(Long shopId, Integer level);

    /**
     * 根据父分类id查询分类列表
     * @param shopId 租户id
     * @param parentId 父分类id
     * @return  分类列表
     */
    List<CategoryVO> queryListByParentId(Long shopId, Long parentId);

    /**
     * 根据分类id查询分类路径
     * @param id 分类id
     * @return 分类路径
     */
    CategoryVO queryCategoryById(Long id);

    /**
     * 根据平台店铺id查询一级分类
     * @param platformShopId
     * @param level
     * @return
     */
    List<CategoryVO> queryPlatformFirstCategory(long platformShopId, int level);

    List<Long> queryAllParentId(Long categoryId);
}
